package com.yilijk.base.utils;


import android.content.Context;
import android.graphics.Bitmap;
import android.widget.ImageView;

import androidx.annotation.DrawableRes;

import com.bumptech.glide.Glide;
import com.bumptech.glide.load.DataSource;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.load.engine.GlideException;
import com.bumptech.glide.load.resource.gif.GifDrawable;
import com.bumptech.glide.request.RequestListener;
import com.bumptech.glide.request.RequestOptions;

import io.reactivex.annotations.Nullable;

public class GlideUtil {

    public static void load(Context context, String url, ImageView imageView, @DrawableRes int defaultPicInt) {
//        if (TextUtils.isEmpty(url)) {
//            return;
//        }
        if (context == null) {
            return;
        }
//        Picasso.with(context).load(url)
//                .placeholder(LOADING_PLACE_HOLDER)
//                .error(FAILED_PLACE_HOLDER).
//                into(imageView, new Callback() {
//                    @Override
//                    public void onSuccess() {
//
//                    }
//
//                    @Override
//                    public void onError() {
//
//                    }
//                });


//        Glide.with(context).load(url)
//                .asBitmap()
//                .placeholder(LOADING_PLACE_HOLDER)
//                .error(FAILED_PLACE_HOLDER)
//                .listener(new RequestListener<String, Bitmap>() {
//                    @Override
//                    public boolean onException(Exception e, String s, Target<Bitmap> target, boolean b) {
//                        return false;
//                    }
//
//                    @Override
//                    public boolean onResourceReady(Bitmap bitmap, String s, Target<Bitmap> target, boolean b, boolean b1) {
//                        return false;
//                    }
//                })
//                .into(imageView);

        RequestOptions options = new RequestOptions()
                .placeholder(defaultPicInt)
                .error(defaultPicInt)
//                .placeholder(LOADING_PLACE_HOLDER)    //加载成功之前占位图
//                .error(FAILED_PLACE_HOLDER)    //加载错误之后的错误图
//                .override(400,400)	//指定图片的尺寸
//                .override(Target.SIZE_ORIGINAL) //图片原始尺寸 面临着更高的OOM风险
                //指定图片的缩放类型为fitCenter （等比例缩放图片，宽或者是高等于ImageView的宽或者是高。）
                .fitCenter()
                //指定图片的缩放类型为centerCrop （等比例缩放图片，直到图片的狂高都大于等于ImageView的宽度，然后截取中间的显示。）
//                .centerCrop()
//                .circleCrop()//指定图片的缩放类型为centerCrop （圆形）
                .skipMemoryCache(true)    //跳过内存缓存
                .diskCacheStrategy(DiskCacheStrategy.AUTOMATIC);
//
////        DiskCacheStrategy.NONE： 表示不缓存任何内容。
////        DiskCacheStrategy.DATA： 表示只缓存原始图片。
////        DiskCacheStrategy.RESOURCE： 表示只缓存转换过后的图片。
////        DiskCacheStrategy.ALL ： 表示既缓存原始图片，也缓存转换过后的图片。
////        DiskCacheStrategy.AUTOMATIC： 表示让Glide根据图片资源智能地选择使用哪一种缓存策略（默认选项）。
//
        Glide.with(context)
//                .asGif()
                .asBitmap()
                .load(url)
                .apply(options)
                .listener(new RequestListener<Bitmap>() {
                    @Override
                    public boolean onLoadFailed(@Nullable GlideException e, Object model, com.bumptech.glide.request.target.Target<Bitmap> target, boolean isFirstResource) {
                        return false;
                    }

                    @Override
                    public boolean onResourceReady(Bitmap resource, Object model, com.bumptech.glide.request.target.Target<Bitmap> target, DataSource dataSource, boolean isFirstResource) {
                        return false;
                    }
                })
                .into(imageView);

    }

    public static void loadGif(Context context, @DrawableRes int drawableRes, ImageView imageView) {
        RequestOptions options = new RequestOptions()
                .fitCenter()
                //.placeholder(R.mipmap.ic_launcher_round)
//                .error(android.R.drawable.stat_notify_error)
//                .priority(Priority.HIGH)
                .skipMemoryCache(true)
                .diskCacheStrategy(DiskCacheStrategy.AUTOMATIC);


        Glide.with(context)
                .asGif()
                .load(drawableRes)
                .apply(options)
                .listener(new RequestListener<GifDrawable>() {
                    @Override
                    public boolean onLoadFailed(@Nullable GlideException e, Object model, com.bumptech.glide.request.target.Target<GifDrawable> target, boolean isFirstResource) {
                        return false;
                    }

                    @Override
                    public boolean onResourceReady(GifDrawable resource, Object model, com.bumptech.glide.request.target.Target<GifDrawable> target, DataSource dataSource, boolean isFirstResource) {
                        return false;
                    }
                })
                .into(imageView);


    }


}
